﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using BLL;
using DTO;
using System.Configuration;

namespace CRM.GUI.HeThong
{
    public partial class frmLogin : DevExpress.XtraEditors.XtraForm
    {

        public frmLogin()
        {
            InitializeComponent();
            txtAccount.Focus();
        }
        System.Configuration.Configuration config =
         ConfigurationManager.OpenExeConfiguration
                    (System.Windows.Forms.Application.ExecutablePath);
        private void btnExit_Click(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            if (txtAccount.Text.Trim().Length > 0 && txtPassword.Text.Trim().Length > 0)
            {                
                LoginEvent();
            }
            else
            {
                MessageBox.Show("Không được để trống User hoặc Password", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void LoginEvent()
        {            
            try
            {
                DatabaseFunc func = new DatabaseFunc();
                Authentication au = new Authentication();
                cDataInTransfer dt = new cDataInTransfer();
                string message = "";                

                //Check for connection
                if (func.CheckState() == ConnectionState.Open)
                {
                    if (au.IsUser(txtAccount.Text, txtPassword.Text, ref message))
                    {
                        //store share data 
                        cDataInTransfer data = new cDataInTransfer();
                        SharedData.RegionList = data.LoadRegionList();
                        SharedData.StatusList = data.LoadStatusList();
                        SharedData.ResultStatusList = data.LoadResultStatusList();
                        SharedData.CallStatusList = data.LoadCallStatusList();
                        SharedData.CollectorList = data.LoadListCollector();
                        SharedData.BrandList = data.LoadListBrand();
                        SharedData.SampleList = data.LoadListSample();
                        dt.LoadCallSetting();
                        SharedData.DownloadPath = config.AppSettings.Settings["DownloadPath"].Value;                        

                        UserInfoEntity user = new UserInfoEntity();
                        frmMain frm = new frmMain();
                        this.Hide();
                        if (user.Role == 3)
                        {
                            string IP = config.AppSettings.Settings["DomainName"].Value;
                            string Account = config.AppSettings.Settings["Account"].Value;
                            string Pass = config.AppSettings.Settings["Password"].Value;
                            Int16 Port = Int16.Parse(config.AppSettings.Settings["Port"].Value);
                            CallMonitor call = new CallMonitor();
                            if (call.CheckCallMonitorServer(IP))
                            {
                                call.ConnectToAsterisk(IP, Port, Account, Pass);
                                frm.fbarCallServerState.Caption = "CallServer Ready";
                              //  call.ReadyToCall();
                            }
                        }
                        frm.fbarAccount.Caption = "Xin Chào: " + user.LastName + " " + user.FirstName;
                        frm.Show();
                    }
                    else
                    {
                        MessageBox.Show(message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Có sự cố liên quan đến đường truyền mạng hoặc Server đang bảo trì.\nXin hãy kiểm tra xem bạn đã kết nối mạng chưa.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch
            {
                MessageBox.Show("Có sự cố liên quan đến đường truyền mạng hoặc Server đang bảo trì.\nXin hãy kiểm tra xem bạn đã kết nối mạng chưa.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void txtAccount_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                txtPassword.Focus();
            }
        }

        private void txtPassword_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                LoginEvent();
            }
        }



    }
}